---
title: 创建多少线程才是合适的？
---
操作系统已经解决了硬件的利用率问题，但是操作系统解决硬件利用率问题的对象往往是单一的硬件设备；而并发程序，往往需要 CPU 和 I/O 设备互相配置工作，多线程就是用来解决 CPU 和 I/O 设备之间的综合利用率的。


如果 CPU 和 I/O 设备的利用率都很低，那么可以尝试通过增加线程来提高吞吐量。

对于 CPU 密集型的计算场景，理论上 线程的数量 = CPU 核数是最合适的。不过在工程上，一般会设置为 CPU核数 + 1。

对于 I/O 密集型的计算场景，要看 CPU 和 I/O 操作的耗时比，

最佳线程数 = `CPU 核数 * [1 + （I/O 耗时/CPU耗时）] `。

:::tip
对于 I/O 密集型应用，最佳线程数应该为： 2*CPU 的核数+ 1
:::
